package com.bsj.power.common.def.entity.gb28181;

import com.alibaba.excel.event.AbstractIgnoreExceptionReadListener;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @Description 国标设备通道信息
 * @Author zhaoyang
 * @Date 2024/4/23 11:46
 */
@Schema(description = "通道信息")
@TableName("tab_device_channel")
@Data
public class DeviceChannel {

    /**
     * 数据库自增ID
     */
    @Schema(description = "数据库自增ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 通道国标编号
     */
    @Schema(description = "通道国标编号")
    @TableField("channel_id")
    private String channelId;

    /**
     * 设备国标编号
     */
    @Schema(description = "设备国标编号")
    @TableField("device_id")
    private String deviceId;

    /**
     * 通道名
     */
    @TableField("name")
    @Schema(description = "名称")
    private String name;

    /**
     * 生产厂商
     */
    @Schema(description = "生产厂商")
    @TableField("manufacture")
    private String manufacture;

    /**
     * 型号
     */
    @Schema(description = "型号")
    @TableField("model")
    private String model;

    /**
     * 通道类型音频视频音视频
     */
    @TableField("media_type")
    private String mediaType;

    /**
     * 逻辑通道序列号
     */
    @TableField("serial_num")
    private Integer serialNum;

//    /**
//     * 设备归属
//     */
//    @Schema(description = "设备归属")
//    @TableField("owner")
//    private String owner;

//    /**
//     * 行政区域
//     */
//    @Schema(description = "行政区域")
//    @TableField("civil_code")
//    private String civilCode;
//
//    /**
//     * 警区
//     */
//    @Schema(description = "警区")
//    @TableField("block")
//    private String block;
//
//    /**
//     * 安装地址
//     */
//    @Schema(description = "安装地址")
//    @TableField("address")
//    private String address;
//
//    /**
//     * 是否有子设备 1有, 0没有
//     */
//    @TableField("parental")
//    @Schema(description = "是否有子设备 1有, 0没有")
//    private int parental;
//
//    /**
//     * 父级id
//     */
//    @TableField("parent_id")
//    @Schema(description = "父级id")
//    private String parentId;
//
//    /**
//     * 信令安全模式  缺省为0; 0:不采用; 2: S/MIME签名方式; 3: S/ MIME加密签名同时采用方式; 4:数字摘要方式
//     */
//    @Schema(description = "信令安全模式  缺省为0; 0:不采用; 2: S/MIME签名方式; 3: S/ MIME加密签名同时采用方式; 4:数字摘要方式")
//    private int safetyWay;
//
//    /**
//     * 注册方式 缺省为1;1:符合IETFRFC3261标准的认证注册模 式; 2:基于口令的双向认证注册模式; 3:基于数字证书的双向认证注册模式
//     */
//    @Schema(description = "注册方式 缺省为1;1:符合IETFRFC3261标准的认证注册模 式; 2:基于口令的双向认证注册模式; 3:基于数字证书的双向认证注册模式")
//    private int registerWay;
//
//    /**
//     * 证书序列号
//     */
//    @Schema(description = "证书序列号")
//    private String certNum;
//
//    /**
//     * 证书有效标识 缺省为0;证书有效标识:0:无效1: 有效
//     */
//    @Schema(description = "证书有效标识 缺省为0;证书有效标识:0:无效1: 有效")
//    private int certifiable;
//
//    /**
//     * 证书无效原因码
//     */
//    @Schema(description = "证书无效原因码")
//    private int errCode;
//
//    /**
//     * 证书终止有效期
//     */
//    @Schema(description = "证书终止有效期")
//    private String endTime;
//
//    /**
//     * 保密属性 缺省为0; 0:不涉密, 1:涉密
//     */
//    @Schema(description = "保密属性 缺省为0; 0:不涉密, 1:涉密")
//    private String secrecy;
//
//    /**
//     * IP地址
//     */
//    @Schema(description = "IP地址")
//    @TableField("ip_address")
//    private String ipAddress;
//
//    /**
//     * 端口号
//     */
//    @Schema(description = "端口号")
//    @TableField("port")
//    private int port;
//
//    /**
//     * 密码
//     */
//    @Schema(description = "密码")
//    @TableField("password")
//    private String password;
//
//    /**
//     * 云台类型
//     */
//    @Schema(description = "云台类型")
//    private int ptzType;
//
//    /**
//     * 云台类型描述字符串
//     */
//    @Schema(description = "云台类型描述字符串")
//    private String ptzTypeText;
//
//    /**
//     * 创建时间
//     */
//    @Schema(description = "创建时间")
//    @TableField("create_time")
//    private String createTime;
//
//    /**
//     * 更新时间
//     */
//    @Schema(description = "更新时间")
//    @TableField("update_time")
//    private String updateTime;
//
//    /**
//     * 在线/离线
//     * 1在线,0离线
//     * 默认在线
//     * 信令:
//     * <Status>ON</Status>
//     * <Status>OFF</Status>
//     * 遇到过NVR下的IPC下发信令可以推流， 但是 Status 响应 OFF
//     */
//    @Schema(description = "在线/离线， 1在线,0离线")
//    @TableField("status")
//    private boolean status;
//
//    /**
//     * 经度
//     */
//    @Schema(description = "经度")
//    @TableField("lon")
//    private double longitude;
//
//    /**
//     * 纬度
//     */
//    @Schema(description = "纬度")
//    @TableField("lat")
//    private double latitude;
//
//    /**
//     * 经度 GCJ02
//     */
//    @Schema(description = "GCJ02坐标系经度")
//    private double longitudeGcj02;
//
//    /**
//     * 纬度 GCJ02
//     */
//    @Schema(description = "GCJ02坐标系纬度")
//    private double latitudeGcj02;
//
//    /**
//     * 经度 WGS84
//     */
//    @Schema(description = "WGS84坐标系经度")
//    private double longitudeWgs84;
//
//    /**
//     * 纬度 WGS84
//     */
//    @Schema(description = "WGS84坐标系纬度")
//    private double latitudeWgs84;
//
//    /**
//     * 子设备数
//     */
//    @Schema(description = "子设备数")
//    private int subCount;
//
//    /**
//     * 流唯一编号，存在表示正在直播
//     */
//    @Schema(description = "流唯一编号，存在表示正在直播")
//    @TableField("stream_id")
//    private String  streamId;
//
//    /**
//     *  是否含有音频
//     */
//    @Schema(description = "是否含有音频")
//    @TableField("has_audio")
//    private boolean hasAudio;
//
//    /**
//     * 标记通道的类型，0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划
//     */
//    @Schema(description = "标记通道的类型，0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划")
//    private int channelType;
//
//    /**
//     * 业务分组
//     */
//    @Schema(description = "业务分组")
//    private String businessGroupId;
//
//    /**
//     * GPS的更新时间
//     */
//    @Schema(description = "GPS的更新时间")
//    @TableField("gps_time")
//    private String gpsTime;
//
//    @Schema(description = "码流标识，优先级高于设备中码流标识，" +
//            "用于选择码流时组成码流标识。默认为null，不设置。可选值: stream/streamnumber/streamprofile/streamMode")
//    private String streamIdentification;
//
//    public void setPtzType(int ptzType) {
//        this.ptzType = ptzType;
//        switch (ptzType) {
//            case 0:
//                this.ptzTypeText = "未知";
//                break;
//            case 1:
//                this.ptzTypeText = "球机";
//                break;
//            case 2:
//                this.ptzTypeText = "半球";
//                break;
//            case 3:
//                this.ptzTypeText = "固定枪机";
//                break;
//            case 4:
//                this.ptzTypeText = "遥控枪机";
//                break;
//        }
//    }

}
